#include "Log.hpp"
#include "ThreadPool.hpp"
#include "Task.hpp"

using namespace LogModule;
using namespace ThreadPoolModule;

int main()
{
    Enable_Console_Log_Strategy();

    //ThreadPool<task_t> *tp = new ThreadPool<task_t>();

    //tp->Start();
    int count = 10;
    while(count--)
    {
        ThreadPool<task_t>::GetInstance()->Enqueue(Download);
        sleep(1);
    }
    ThreadPool<task_t>::GetInstance()->Stop();
    ThreadPool<task_t>::GetInstance()->Join();
    return 0;
}

// void fun()
// {
//     int a = 10;
//     LOG(LogLevel::FATAL) << "hello world" << 1234 << ", 3.14" << 'c' << a;
// }
// int main()
// {
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";

//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::DEBUG) << "hello world";
//     LOG(LogLevel::WARNING) << "hello world";
//     fun();
//     return 0;
// }

// int main()
// {
//     //std::unique_ptr<LogStrategy> strategy = std::make_unique<ConsoleLogStrategy>();
//     std::unique_ptr<LogStrategy> strategy = std::make_unique<FileLogStrategy>();
//     strategy->SyncLog("hello log!");
//     return 0;
// }